package com.zkh.myframe.server.tomcat.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 定义服务器属性
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Server {
	
	/**
	 * 服务类型
	 */
	ServerType type();
	
	/**
	 * 编译路径
	 */
	String compilePath() default "bin";
	
	/**
	 * 端口号，默认80
	 */
	int port() default 80;
	
	/**
	 * 项目路径
	 */
	String contextPath() default "";

	/**
	 * 设置主机，默认localhost
	 */
	String hostname() default "localhost";
	
	/**
	 * 虚拟主机的域名。默认不启用，配置后自动启用
	 */
	String virtualHostname() default "";
	
	/**
	 * 服务基础目录，为空时，默认为临时目录。<br>
	 * <b>绝对路径：</b>以“/”（Linux系统）或“字母:/”（windows系统）开头。<br>
	 * <b>相对路径：</b>当前位置请使用“.”，其它位置直接目录开头，如“tomcat/base”。<br><br>
	 * 相对路径位置：<br>
	 * &nbsp;&nbsp;&nbsp;&nbsp;1、测试环境，在项目根目录下。<br>
	 * &nbsp;&nbsp;&nbsp;&nbsp;2、正式环境（jar包运行），和jar包在相同目录下。
	 */
	String baseDir() default "";
	
	/**
	 * 监听器，已默认集成myframe核心监听器
	 */
	String[] listener() default "com.zkh.myframe.listener.InitialListener";
	
	/**
	 * 过滤器，已默认集成myframe核心过滤器
	 */
	Filter[] filters() default @Filter(filterName = "coreFilter", urlPattern = {"/*"}, filterClass = "com.zkh.myframe.filter.CoreFilter");
	
	/**
	 * webRoot路径，相对于当前项目根目录，默认WebRoot。当type为JSP_VIEW时设置。
	 */
	String webRoot() default "WebRoot";
	
	/**
	 * 连接超时时间，单位ms，默认30000。
	 */
	long timeout() default 30000;
	
	/**
	 * 设置最大Post大小，默认<b>2 * 1024 * 1024</b>，即2M。
	 */
	int maxPostSize() default 2 * 1024 * 1024;
	
	/**
	 * session失效时间，默认30，单位：分。
	 */
	int sessionTimeout() default 30;
	
	/**
	 * 连接协议，默认org.apache.coyote.http11.Http11NioProtocol，即HTTP/1.1
	 */
	String protocol() default "org.apache.coyote.http11.Http11NioProtocol";
}
